home *** CD-ROM | disk | FTP | other *** search
-
- libmake/libmake libmake/libmake
-
- LIBMAKE.DOC
-
- GENERATING LARGE LINK LIBRARIES
-
- Libmake is a utility that will scan a file listings sources files for
- a library, determine what is out of date, compile the out of date
- modules (compile .c modules, assemble .a modules), and JOIN the whole
- thing together in the end to create a library. Libmake is useful
- for creating large libraries that would otherwise overflow the command
- line length limit in DMakefile.
-
- Libmake takes several arguments, some optional:
-
- libmake <file> -n -o objdir -l lib -clean -pr -mRR -mC -mD -proto -Ddef
-
-
- <file>
- specify the control file that contains a list of source modules,
- see below.
-
- -v
- verbose operation
-
- -n
- dry run (do not actually compile/assemble/join anything)
-
- -Dmacro[=def]
-
- specify DCPP macro, i.e. #define equivalent to be passed to all
- compiles.
-
- -o object_dir
-
- specify object directory prefix, if a directory must end in
- '/' or ':', allowing both file prefixes and directory paths.
-
- -l library
-
- specify library output file, usually something.lib
-
- -clean
-
- instead of compiling/assembling/join'ing the library, delete
- ALL object modules from object_dir relating to the library.
-
- -pr
- pass -pr option to DCC
-
- -proto
- pass -proto option to DCC
-
- -mr
- -mR
- -mRR
- specify reg-call opts to DCC (normally only -mRR is useful when
- generating fully registered libraries)
-
- -mD
- pass -mD to DCC, causes DCC to use the large-data
- model. Default is to use the small-data model
-
- -mC
- pass -mC to DCC, causes DCC to use the large-code
- model. Default is to use the small-data model
-
- -prof
- pass -prof to DCC, causes profiling code to be generated for
- all the routines in the library.
-
-
- CONTROL FILE
-
- The control file is named files.<something> by convention, for
- example, 'files.c3lib', which happens to be the control file used
- generate C*.LIB.
-
- A control file may contain blank lines, lines that begin with a
- semi-colon (comments), and lines containing a file name optionally
- preceeded by a '*'. Here is an example:
-
-
- ------------------ example file -----------------
-
- ; Full C library
-
- assert/assert.c
- assert/abort.c
- amiga/exit.c
- amiga/main.c
- amiga/wbmain.c
- *amiga/c.a
- *amiga/c_pi.a
- *amiga/c_pr.a
- *amiga/x.a
- amiga/config.a
-
- ------------------ example file -----------------
-
- Lines beginning with a '*' tell LIBMAKE to compile/assemble the file
- but NOT to include the object module in the generated output library.
-
- Thus, in the above example amiga/c.a would be assembled but not made
- part of the DLIB:C.LIB
-
- Also note that the path specified for a given file is appended to
- the -o (object directory) specification. Thus, if you were to use
- the following libmake line:
-
- 1> libmake files.c3lib -o dtmp:xx/ -l dlib:xx.lib -pr -proto
-
- Then object modules would be created as follows:
-
- DTMP:XX/assert/assert.o
- DTMP:XX/assert/abort.o
- DTMP:XX/amiga/exit.o
-
- etc..
-
- You probably want to pre-create the directory structure required.
- Please refer to the library source archive for examples (no less than
- DMakefile's calling libmake to regenerate every single DICE library
- that exists!)
-
- NAMING CONVENSIONS IN THE CONTROL FILE
-
- .a assemble with DAS
- .a68 assemble with A68K
- .o insert specified object into destination library (raw copy)
- .lib insert specified library into destination library (raw copy)
- <other> any other suffix is assumed to be a C source file to compile
- with DCC
-
-
-